home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / files.swg / 0052_DOS pipe as input.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-25  |  2KB  |  56 lines

  1.  
  2. PROGRAM DFile;
  3.  
  4. { Purpose: Given, DIR [filespec] /S /B, delete all occurrences of [filespec] }
  5. {          from the current directory on.                                    }
  6. { Example: dir *.bak /s /b | dfile                                           }
  7.  
  8. VAR
  9.    In_File       : TEXT;    { for standard input }
  10.    Key           : CHAR;    { for user confirmation }
  11.    Files_Deleted : INTEGER; { for number of files deleted }
  12.  
  13. FUNCTION GetKey : CHAR;
  14.  
  15. { The ASCII code is in AL, which is the place you need }
  16. { it to be as the byte return value of a function. }
  17. { Provided by Drew Veliath of 1:272/60@fidonet.org }
  18.  
  19. INLINE ( $B4 / $00 /  { MOV AH,0 }
  20.          $CD / $16 ); { INT $16 }
  21.  
  22. PROCEDURE Delete_Files ( VAR In_File       : TEXT;
  23.                          VAR Files_Deleted : INTEGER );
  24. VAR
  25.    Trgt_File : TEXT;    { for file to be deleted }
  26.    File_Spec : STRING;  { for filespec entered by user }
  27.  
  28. BEGIN
  29.    WHILE NOT EOF ( In_File ) DO BEGIN
  30.       READLN ( In_File, File_Spec );
  31.       ASSIGN ( Trgt_File, File_Spec );
  32.       {$I-}
  33.       ERASE ( Trgt_File );
  34.       {$I+}
  35.       IF IORESULT = 0 THEN BEGIN
  36.          INC ( Files_Deleted );
  37.          WRITELN ( 'Deleted ', File_Spec )
  38.          END { IF IORESULT = 0 }
  39.       END { WHILE NOT EOF ( In_File ) }
  40. END; { PROCEDURE Delete_Files }
  41.  
  42. BEGIN { main program }
  43.    WRITE (  'Are you sure [yn]?  ' );
  44.    Key := GetKey;
  45.    WRITELN;
  46.    Files_Deleted := 0;
  47.    IF UPCASE ( Key ) = 'Y' THEN BEGIN
  48.       ASSIGN ( In_File, '' );  { assign In_File to standard input }
  49.       RESET ( In_File );
  50.       Delete_Files ( In_File, Files_Deleted );
  51.       CLOSE ( In_File )
  52.       END; { IF UPCASE ( Key ) = 'Y' }
  53.    WRITELN;
  54.    WRITELN ( Files_Deleted, ' file(s) deleted.' )
  55. END. { main program }
  56.